home *** CD-ROM | disk | FTP | other *** search
/ American Osteopathic Ass…tion Yearbook 2005 & 2006 / American Osteopathic Association Yearbook 2005 & 2006.iso / mac / app / repr.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2004-07-22  |  5.8 KB  |  173 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.3)
  3.  
  4. '''Redo the `...` (representation) but with limits on most sizes.'''
  5. __all__ = [
  6.     'Repr',
  7.     'repr']
  8.  
  9. class Repr:
  10.     
  11.     def __init__(self):
  12.         self.maxlevel = 6
  13.         self.maxtuple = 6
  14.         self.maxlist = 6
  15.         self.maxarray = 5
  16.         self.maxdict = 4
  17.         self.maxstring = 30
  18.         self.maxlong = 40
  19.         self.maxother = 20
  20.  
  21.     
  22.     def repr(self, x):
  23.         return self.repr1(x, self.maxlevel)
  24.  
  25.     
  26.     def repr1(self, x, level):
  27.         typename = type(x).__name__
  28.         if ' ' in typename:
  29.             parts = typename.split()
  30.             typename = '_'.join(parts)
  31.         
  32.         if hasattr(self, 'repr_' + typename):
  33.             return getattr(self, 'repr_' + typename)(x, level)
  34.         else:
  35.             s = `x`
  36.             if len(s) > self.maxother:
  37.                 i = max(0, (self.maxother - 3) // 2)
  38.                 j = max(0, self.maxother - 3 - i)
  39.                 s = s[:i] + '...' + s[len(s) - j:]
  40.             
  41.             return s
  42.  
  43.     
  44.     def repr_tuple(self, x, level):
  45.         n = len(x)
  46.         if n == 0:
  47.             return '()'
  48.         
  49.         if level <= 0:
  50.             return '(...)'
  51.         
  52.         s = ''
  53.         for i in range(min(n, self.maxtuple)):
  54.             if s:
  55.                 s = s + ', '
  56.             
  57.             s = s + self.repr1(x[i], level - 1)
  58.         
  59.         if n > self.maxtuple:
  60.             s = s + ', ...'
  61.         elif n == 1:
  62.             s = s + ','
  63.         
  64.         return '(' + s + ')'
  65.  
  66.     
  67.     def repr_list(self, x, level):
  68.         n = len(x)
  69.         if n == 0:
  70.             return '[]'
  71.         
  72.         if level <= 0:
  73.             return '[...]'
  74.         
  75.         s = ''
  76.         for i in range(min(n, self.maxlist)):
  77.             if s:
  78.                 s = s + ', '
  79.             
  80.             s = s + self.repr1(x[i], level - 1)
  81.         
  82.         if n > self.maxlist:
  83.             s = s + ', ...'
  84.         
  85.         return '[' + s + ']'
  86.  
  87.     
  88.     def repr_array(self, x, level):
  89.         n = len(x)
  90.         header = "array('%s', [" % x.typecode
  91.         if n == 0:
  92.             return header + '])'
  93.         
  94.         if level <= 0:
  95.             return header + '...])'
  96.         
  97.         s = ''
  98.         for i in range(min(n, self.maxarray)):
  99.             if s:
  100.                 s += ', '
  101.             
  102.             s += self.repr1(x[i], level - 1)
  103.         
  104.         if n > self.maxarray:
  105.             s += ', ...'
  106.         
  107.         return header + s + '])'
  108.  
  109.     
  110.     def repr_dict(self, x, level):
  111.         n = len(x)
  112.         if n == 0:
  113.             return '{}'
  114.         
  115.         if level <= 0:
  116.             return '{...}'
  117.         
  118.         s = ''
  119.         keys = x.keys()
  120.         keys.sort()
  121.         for i in range(min(n, self.maxdict)):
  122.             if s:
  123.                 s = s + ', '
  124.             
  125.             key = keys[i]
  126.             s = s + self.repr1(key, level - 1)
  127.             s = s + ': ' + self.repr1(x[key], level - 1)
  128.         
  129.         if n > self.maxdict:
  130.             s = s + ', ...'
  131.         
  132.         return '{' + s + '}'
  133.  
  134.     
  135.     def repr_str(self, x, level):
  136.         s = `x[:self.maxstring]`
  137.         if len(s) > self.maxstring:
  138.             i = max(0, (self.maxstring - 3) // 2)
  139.             j = max(0, self.maxstring - 3 - i)
  140.             s = `x[:i] + x[len(x) - j:]`
  141.             s = s[:i] + '...' + s[len(s) - j:]
  142.         
  143.         return s
  144.  
  145.     
  146.     def repr_long(self, x, level):
  147.         s = `x`
  148.         if len(s) > self.maxlong:
  149.             i = max(0, (self.maxlong - 3) // 2)
  150.             j = max(0, self.maxlong - 3 - i)
  151.             s = s[:i] + '...' + s[len(s) - j:]
  152.         
  153.         return s
  154.  
  155.     
  156.     def repr_instance(self, x, level):
  157.         
  158.         try:
  159.             s = `x`
  160.         except:
  161.             return '<' + x.__class__.__name__ + ' instance at ' + hex(id(x))[2:] + '>'
  162.  
  163.         if len(s) > self.maxstring:
  164.             i = max(0, (self.maxstring - 3) // 2)
  165.             j = max(0, self.maxstring - 3 - i)
  166.             s = s[:i] + '...' + s[len(s) - j:]
  167.         
  168.         return s
  169.  
  170.  
  171. aRepr = Repr()
  172. repr = aRepr.repr
  173.